Defines a linear, axial viscous damper element. When evaluated with nodal velocities, the element "strain" is the elongation rate and the element "stress" is the damper force (positive in tension).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | damping_coefficient |
The viscous damping coefficient. |
|||
| real(kind=real64), | public, | dimension(3) | :: | direction | = | 0.0d0 |
The unit vector defining the user-supplied element axis. Only the leading components corresponding to the element dimensionality are used. This value is used only if use_direction is true. |
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The first node of the element (s = -1). |
|||
| type(node), | public | :: | node_2 |
The second node of the element (s = 1). |
|||
| logical, | public | :: | use_direction | = | .false. |
True if the element axis is defined by direction; else, false if the axis is defined by the vector from node 1 to node 2. |
Gets the unit vector defining the element axis in the global coordinate system.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
The D-element unit vector, where D is the element dimensionality.
Returns the matrix relating damper elongation rate to damper force.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(damper_element), | intent(in) | :: | this |
The damper_element object. |
The 1-by-1 matrix containing the damping coefficient.
Computes the global damper damping matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(damper_element), | intent(in) | :: | this |
The damper_element object. |
The 2D-by-2D global damping matrix, where D is the element dimensionality.
Evaluates the i-th linear shape function
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The index of the shape function to evaluate. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinate at which to evaluate the shape function. |
The value of the i-th shape function at s.
Returns the element external force vector. Discrete elements do not support distributed loads; therefore, a zero-valued vector is returned. Concentrated loads should be applied directly to the global force vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(discrete_element), | intent(in) | :: | this |
The discrete_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | q |
The distributed load vector. This argument is unused and is present for interface compatibility. |
|
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule. This argument is unused and is present for interface compatibility. |
The N-element force vector, where N is the total number of element degrees of freedom.
Defines the signature of a function performing a query on an integer-valued property of a element type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
The resulting value.
Gets the number of degrees of freedom per node. This is equal to the element dimensionality as only translations are considered.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
The number of DOF per node.
Gets the requested node from the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The local index of the node to retrieve. This value must be either 1 or 2. |
The requested node.
Gets the number of nodes for the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
The number of nodes.
Returns the natural coordinate of the requested node. A single-node element has its node at s = 0; a two-node element has its nodes at s = -1 and s = 1, respectively.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(discrete_element), | intent(in) | :: | this |
The discrete_element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The local index of the node. |
The natural coordinate of the node.
Returns the element Jacobian. Discrete elements have no spatial extent; therefore, a unit 1-by-1 Jacobian is returned.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(discrete_element), | intent(in) | :: | this |
The discrete_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the Jacobian. This argument is unused and is present for interface compatibility. |
The 1-by-1 Jacobian matrix.
Returns the element mass matrix. The default implementation returns a zero-valued matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(discrete_element), | intent(in) | :: | this |
The discrete_element object. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule. This argument is unused and is present for interface compatibility. |
The N-by-N mass matrix, where N is the total number of element degrees of freedom.
Computes the translational displacement interpolation matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinate at which to evaluate the matrix. |
The D-by-2D shape function matrix, where D is the element dimensionality.
Returns the element stiffness matrix. The default implementation returns a zero-valued matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(discrete_element), | intent(in) | :: | this |
The discrete_element object. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule. This argument is unused and is present for interface compatibility. |
The N-by-N stiffness matrix, where N is the total number of element degrees of freedom.
Computes the element strain at the specified natural coordinate. The strain is
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The element displacement vector in the element coordinate system. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the strain. |
The resulting strain vector.
Computes the matrix relating global nodal displacements to the axial elongation of the element where is the unit element axis.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(two_node_discrete_element), | intent(in) | :: | this |
The two_node_discrete_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinate at which to evaluate the matrix. This argument is unused as the elongation is constant along the element. |
The 1-by-2D matrix, where D is the element dimensionality.
Computes the element stress result at the specified natural coordinate. The stress result is
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The element displacement vector in the element coordinate system. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the stress. |
The resulting stress vector.